#ifndef _LOGIC_STATEMACHINE_RIBBONPOSNCTRLSTATE_H_
#define _LOGIC_STATEMACHINE_RIBBONPOSNCTRLSTATE_H_

#include "StateMachineState.h"

//**
typedef struct RibbonPosnCtrlStateMachine_Off
{
    StateMachineBase sm_;
} RibbonPosnCtrlStateMachine_Off;
extern void RibbonPosnCtrlStateMachineOffEntry(void);
extern void RibbonPosnCtrlStateMachineOffExcute(void);
extern void RibbonPosnCtrlStateMachineOffExit(void);

//***
typedef struct RibbonPosnEffectStateMachine_Unlock
{
    StateMachineBase sm_;
} RibbonPosnEffectStateMachine_Unlock;
extern void RibbonPosnEffectStateMachineUnlockEntry(void);
extern void RibbonPosnEffectStateMachineUnlockExcute(void);
extern void RibbonPosnEffectStateMachineUnlockExit(void);

//***
typedef struct RibbonPosnEffectStateMachine_Lock
{
    StateMachineBase sm_;
} RibbonPosnEffectStateMachine_Lock;
extern void RibbonPosnEffectStateMachineLockEntry(void);
extern void RibbonPosnEffectStateMachineLockExcute(void);
extern void RibbonPosnEffectStateMachineLockExit(void);

//***
typedef struct RibbonPosnEffectStateMachine_All
{
    StateMachineBase sm_;
} RibbonPosnEffectStateMachine_All;
extern void RibbonPosnEffectStateMachineAllEntry(void);
extern void RibbonPosnEffectStateMachineAllExcute(void);
extern void RibbonPosnEffectStateMachineAllExit(void);

//***
typedef struct RibbonPosnEffectStateMachine_Off
{
    StateMachineBase sm_;
} RibbonPosnEffectStateMachine_Off;
extern void RibbonPosnEffectStateMachineOffEntry(void);
extern void RibbonPosnEffectStateMachineOffExcute(void);
extern void RibbonPosnEffectStateMachineOffExit(void);

//***
typedef struct RibbonPosnEffectStateMachine_Default
{
    StateMachineBase sm_;
} RibbonPosnEffectStateMachine_Default;
extern void RibbonPosnEffectStateMachineDefaultEntry(void);
extern void RibbonPosnEffectStateMachineDefaultExcute(void);
extern void RibbonPosnEffectStateMachineDefaultExit(void);


//**
typedef struct RibbonPosnCtrlStateMachine_On
{
    RibbonPosnEffectStateMachine_Unlock  ribbonPosnEffectStateMachineUnlock_;
    RibbonPosnEffectStateMachine_Lock    ribbonPosnEffectStateMachineLock_;
    RibbonPosnEffectStateMachine_All     ribbonPosnEffectStateMachineAll_;
    RibbonPosnEffectStateMachine_Off     ribbonPosnEffectStateMachineOff_;
    RibbonPosnEffectStateMachine_Default ribbonPosnEffectStateMachineDefault_;

    StateMachineBase sm_;
} RibbonPosnCtrlStateMachine_On;
extern void RibbonPosnCtrlStateMachineOnEntry(void);
extern void RibbonPosnCtrlStateMachineOnExcute(void);
extern void RibbonPosnCtrlStateMachineOnExit(void);

//**
typedef struct RibbonPosnCtrlStateMachine_Again
{
    StateMachineBase sm_;
} RibbonPosnCtrlStateMachine_Again;
extern void RibbonPosnCtrlStateMachineAgainEntry(void);
extern void RibbonPosnCtrlStateMachineAgainExcute(void);
extern void RibbonPosnCtrlStateMachineAgainExit(void);

extern RibbonPosnCtrlStateMachine_On g_RibbonPosnCtrlStateMachineOn;
extern void InitRibbonPosnCtrlStateMachineOn(void);

#endif
